# REINDEX with schemas
#
# Check that concurrent drop of relations while doing a REINDEX
# SCHEMA allows the command to work.

setup
{
    CREATE SCHEMA reindex_schema;
    CREATE TABLE reindex_schema.tab_locked (a int PRIMARY KEY);
    CREATE TABLE reindex_schema.tab_dropped (a int PRIMARY KEY);
}

teardown
{
    DROP SCHEMA reindex_schema CASCADE;
}

session "s1"
step "begin1"        { BEGIN; }
step "lock1"         { LOCK reindex_schema.tab_locked IN SHARE UPDATE EXCLUSIVE MODE; }
step "end1"          { COMMIT; }

session "s2"
step "reindex2"      { REINDEX SCHEMA reindex_schema; }
step "reindex_conc2" { REINDEX SCHEMA CONCURRENTLY reindex_schema; }

session "s3"
step "drop3"         { DROP TABLE reindex_schema.tab_dropped; }

# The table can be dropped while reindex is waiting.
permutation "begin1" "lock1" "reindex2" "drop3" "end1"
permutation "begin1" "lock1" "reindex_conc2" "drop3" "end1"
